package com.jc.vo;


import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;

/**
 * 赊销申请
 */
public class CreditSaleVO implements Serializable {

    private static final long serialVersionUID = -1L;


    /**
     * 业务流水号
     */
    private String corpSerialNo;


    /**
     * 操作类型
     * NEW: 新申请
     * MODIFY: 修改
     */
    private String operationType;

//    /**
//     *  原申请流水号 关联的原限额ID（变更申请时使用）
//     */
//    private String originalCorpSerialNo;




    /**
     * 出货日（必录），格式：yyyy-MM-dd
     * 出货日应在保单生效日期之后   保单生效日期（2025-06-29）
     * 出货日 应在当前日之前
     * 非证交易按出货日填写，
     * <p>
     * 信用证交易按提交单据日填写
     */
    private Date happenDate;

    /**
     * 发票日期（非必录），格式：yyyy-MM-dd
     */
    private Date happen2Date;


    // 买方信息字段
//    /** 买方名称（必录），长度：300 */
//    private String riskName;
    /**
     * 买方picccode（必录），长度：22
     */
    private String riskPiccCode;


//    /** 买方地址（必录），长度：180 */
//    private String riskCompAddress;


    /**
     * 商品数量及单位（非必录），长度：30
     */
    private String productNum;

    // 交易信息字段
    /**
     * 信用起始日（必录），格式：yyyy-MM-dd
     * 信用期限起始日应晚于出货日（可为出货日当天）
     * <p>
     * 信用期限起始日应晚于出货日最长不能超过30天！
     *
     *
     *    应付款日 = 信用起始日 + 信用期限
     */
    private Date startDate;
    /**
     * 应回款日期（非必录）
     *
     *
     */
    private Date accrualDate;
    /**
     * 提交单据日（必录），格式：yyyy-MM-dd（LC/LCOA必录）
     * <p>
     * 提交单据日不得早于出货日
     */
    private Date comitFormDate;
    /**
     * 开证行Swift码（必录），长度：150（LC/LCOA必录）
     */
    private String bankSwift;
    /**
     * 币种（必录），长度：50（外贸必填）
     */
    private String currency;
    /**
     * 运输方式（非必录），长度：50
     */
    private String transportMode;
    /**
     * 国家和地区（必录），长度：50（内贸非必填，外贸必填）
     */
    private String countryOrArea;
    /**
     * 海关商品代码（必录），长度：40（内贸非必填，外贸必填）
     */
    private String customsCode;
    /**
     * 赊销金额（必录），小数点后最多两位
     */
    private BigDecimal xamInvoiceAmout;
    /**
     * 回款日期（非必录）
     *  确认收汇金额 有值  必填
     */
    private Date recoverDate;
    /**
     * 信用期限（必录），赊销天数
     *
     *
     * 应付款日 = 信用起始日 + 信用期限
     *
     */
    private Integer paymentTerms;
    /**
     * 发票号（必录），长度：100（唯一且有管控）
     */
    private String contractNo;
    /**
     * 费率计算标准（必录），长度：20（外贸必填，值：LC/LCOA/OA/DP/DA）
     */
    private String contractPayment;
    /**
     * 确认收汇金额（非必录），不能大于赊销金额
     */
    private BigDecimal xamRecoverAmount;



    // 商品类别信息
    /**
     * 内贸选择的商品类别（必录），长度：200（多选用英文分号分隔，如"1;3;16"）
     */
    private String exportTrade;
    /**
     * 商品类别备注（必录），长度：50（商品类别包含"其他"时必填）
     */
    private String exportTradeInput;
    /**
     * 是否为出口前（非必录），0：出口后；1：出口前
     */
    private String isAdditionalRisk;
    /**
     * 备注（非必录），长度：300
     */
    private String remark;




    private String createUser;



    private CreditSaleResponse response;



    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }


    public String getCorpSerialNo() {
        return corpSerialNo;
    }

    public void setCorpSerialNo(String corpSerialNo) {
        this.corpSerialNo = corpSerialNo;
    }

    public Date getHappenDate() {
        return happenDate;
    }

    public void setHappenDate(Date happenDate) {
        this.happenDate = happenDate;
    }

    public Date getHappen2Date() {
        return happen2Date;
    }

    public void setHappen2Date(Date happen2Date) {
        this.happen2Date = happen2Date;
    }

    public String getRiskPiccCode() {
        return riskPiccCode;
    }

    public void setRiskPiccCode(String riskPiccCode) {
        this.riskPiccCode = riskPiccCode;
    }

    public String getProductNum() {
        return productNum;
    }

    public void setProductNum(String productNum) {
        this.productNum = productNum;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getAccrualDate() {
        return accrualDate;
    }

    public void setAccrualDate(Date accrualDate) {
        this.accrualDate = accrualDate;
    }

    public Date getComitFormDate() {
        return comitFormDate;
    }

    public void setComitFormDate(Date comitFormDate) {
        this.comitFormDate = comitFormDate;
    }

    public String getBankSwift() {
        return bankSwift;
    }

    public void setBankSwift(String bankSwift) {
        this.bankSwift = bankSwift;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public String getTransportMode() {
        return transportMode;
    }

    public void setTransportMode(String transportMode) {
        this.transportMode = transportMode;
    }

    public String getCountryOrArea() {
        return countryOrArea;
    }

    public void setCountryOrArea(String countryOrArea) {
        this.countryOrArea = countryOrArea;
    }

    public String getCustomsCode() {
        return customsCode;
    }

    public void setCustomsCode(String customsCode) {
        this.customsCode = customsCode;
    }

    public BigDecimal getXamInvoiceAmout() {
        return xamInvoiceAmout;
    }

    public void setXamInvoiceAmout(BigDecimal xamInvoiceAmout) {
        this.xamInvoiceAmout = xamInvoiceAmout;
    }

    public Date getRecoverDate() {
        return recoverDate;
    }

    public void setRecoverDate(Date recoverDate) {
        this.recoverDate = recoverDate;
    }

    public Integer getPaymentTerms() {
        return paymentTerms;
    }

    public void setPaymentTerms(Integer paymentTerms) {
        this.paymentTerms = paymentTerms;
    }

    public String getContractNo() {
        return contractNo;
    }

    public void setContractNo(String contractNo) {
        this.contractNo = contractNo;
    }

    public String getContractPayment() {
        return contractPayment;
    }

    public void setContractPayment(String contractPayment) {
        this.contractPayment = contractPayment;
    }

    public BigDecimal getXamRecoverAmount() {
        return xamRecoverAmount;
    }

    public void setXamRecoverAmount(BigDecimal xamRecoverAmount) {
        this.xamRecoverAmount = xamRecoverAmount;
    }

    public String getExportTrade() {
        return exportTrade;
    }

    public void setExportTrade(String exportTrade) {
        this.exportTrade = exportTrade;
    }

    public String getExportTradeInput() {
        return exportTradeInput;
    }

    public void setExportTradeInput(String exportTradeInput) {
        this.exportTradeInput = exportTradeInput;
    }

    public String getIsAdditionalRisk() {
        return isAdditionalRisk;
    }

    public void setIsAdditionalRisk(String isAdditionalRisk) {
        this.isAdditionalRisk = isAdditionalRisk;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public CreditSaleResponse getResponse() {
        return response;
    }

    public void setResponse(CreditSaleResponse response) {
        this.response = response;
    }


    public String getOperationType() {
        return operationType;
    }

    public void setOperationType(String operationType) {
        this.operationType = operationType;
    }

//    public String getOriginalCorpSerialNo() {
//        return originalCorpSerialNo;
//    }
//
//    public void setOriginalCorpSerialNo(String originalCorpSerialNo) {
//        this.originalCorpSerialNo = originalCorpSerialNo;
//    }
}
